home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / TextEdit.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  39.0 KB  |  1,029 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        TextEdit.h
  3.  
  4.      Contains:    TextEdit Interfaces.
  5.  
  6.      Version:    Technology:    System 8.5
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1985-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __TEXTEDIT__
  18. #define __TEXTEDIT__
  19.  
  20. #ifndef __MACTYPES__
  21.     #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __QUICKDRAW__
  25.     #include <Quickdraw.h>
  26. #endif
  27.  
  28. #ifndef __MIXEDMODE__
  29.     #include <MixedMode.h>
  30. #endif
  31.  
  32.  
  33.  
  34.  
  35.  
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=mac68k
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55.  
  56. typedef struct TERec                     TERec;
  57. typedef TERec *                            TEPtr;
  58. typedef TEPtr *                            TEHandle;
  59. typedef CALLBACK_API( void , HighHookProcPtr )(const Rect *r, TEPtr pTE);
  60. typedef CALLBACK_API( Boolean , EOLHookProcPtr )(char theChar, TEPtr pTE, TEHandle hTE);
  61. typedef CALLBACK_API( void , CaretHookProcPtr )(const Rect *r, TEPtr pTE);
  62. typedef CALLBACK_API( unsigned short , WidthHookProcPtr )(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  63. typedef CALLBACK_API( unsigned short , TextWidthHookProcPtr )(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  64. typedef CALLBACK_API( unsigned short , NWidthHookProcPtr )(unsigned short styleRunLen, unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, short *lineStart, TEPtr pTE, TEHandle hTE);
  65. typedef CALLBACK_API( void , DrawHookProcPtr )(unsigned short textOffset, unsigned short drawLen, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  66. typedef CALLBACK_API( Boolean , HitTestHookProcPtr )(unsigned short styleRunLen, unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr, TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, Boolean *pixelInChar);
  67. typedef CALLBACK_API( void , TEFindWordProcPtr )(unsigned short currentPos, short caller, TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  68. typedef CALLBACK_API( void , TERecalcProcPtr )(TEPtr pTE, unsigned short changeLength, unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  69. typedef CALLBACK_API( void , TEDoTextProcPtr )(TEPtr pTE, unsigned short firstChar, unsigned short lastChar, short selector, GrafPtr *currentGrafPort, short *charPosition);
  70. typedef CALLBACK_API( Boolean , TEClickLoopProcPtr )(TEPtr pTE);
  71. /*
  72.     WARNING: TEClickLoopProcPtr uses register based parameters under classic 68k
  73.              and cannot be written in a high-level language without 
  74.              the help of mixed mode or assembly glue.
  75. */
  76. typedef CALLBACK_API( Boolean , WordBreakProcPtr )(Ptr text, short charPos);
  77. /*
  78.     WARNING: WordBreakProcPtr uses register based parameters under classic 68k
  79.              and cannot be written in a high-level language without 
  80.              the help of mixed mode or assembly glue.
  81. */
  82. /* 
  83.     Important note about TEClickLoopProcPtr and WordBreakProcPtr
  84.  
  85.     At one point these were defined as returning the function result in the 
  86.     condition code Z-bit.  This was correct, in that it was what the 68K
  87.     implementation of TextEdit actually tested.  But, MixedMode had a different 
  88.     idea of what returning a boolean in the Z-bit meant.  MixedMode was setting
  89.     the Z-bit the complement of what was wanted.  
  90.     
  91.     Therefore, these ProcPtrs have been changed (back) to return the result in
  92.     register D0.  It turns out that for register based routines, 
  93.     MixedMode sets the Z-bit of the 68K emulator based on the contents 
  94.     of the return result register.  Thus we can get the Z-bit set correctly.  
  95.     
  96.     But, when TextEdit is recoded in PowerPC, if it calls a 68K ClickLoop
  97.     or WordBreak routine, register D0 had better have the result (in addition
  98.     to the Z-bit). Therefore all 68K apps should make sure their ClickLoop or
  99.     WordBreak routines set register D0 at the end.
  100. */
  101.  
  102. /* 
  103.     There is no function to get/set the low-mem for FindWordHook at 0x07F8.
  104.     This is because it is not a low-mem ProcPtr. That address is the entry
  105.     in the OS TrapTable for trap 0xA0FE.  You can use Get/SetTrapAddress to 
  106.     acccess it.    
  107. */
  108.  
  109. /*
  110.     The following ProcPtrs cannot be written in or called from a high-level 
  111.     language without the help of mixed mode or assembly glue because they 
  112.     use the following parameter-passing conventions:
  113.  
  114.     typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  115.     typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  116.  
  117.         In:
  118.             =>     r                        on stack
  119.             =>    pTE                        A3.L
  120.         Out:
  121.             none
  122.  
  123.     typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  124.  
  125.         In:
  126.             =>     theChar                    D0.B
  127.             =>    pTE                        A3.L
  128.             =>    hTE                        A4.L
  129.         Out:
  130.             <=    Boolean                    Z bit of the CCR
  131.  
  132.     typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen,
  133.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  134.     typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen,
  135.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  136.  
  137.         In:
  138.             =>     textLen                    D0.W
  139.             =>    textOffset                D1.W
  140.             =>    textBufferPtr            A0.L
  141.             =>    pTE                        A3.L
  142.             =>    hTE                        A4.L
  143.         Out:
  144.             <=    unsigned short            D1.W
  145.  
  146.     typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen,
  147.      unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, 
  148.      short *lineStart, TEPtr pTE, TEHandle hTE);
  149.  
  150.         In:
  151.             =>     styleRunLen                D0.W
  152.             =>    styleRunOffset            D1.W
  153.             =>    slop                    D2.W (low)
  154.             =>    direction                D2.W (high)
  155.             =>    textBufferPtr            A0.L
  156.             =>    lineStart                A2.L
  157.             =>    pTE                        A3.L
  158.             =>    hTE                        A4.L
  159.         Out:
  160.             <=    unsigned short            D1.W
  161.  
  162.     typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen,
  163.      void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  164.  
  165.         In:
  166.             =>     textOffset                D0.W
  167.             =>    drawLen                    D1.W
  168.             =>    textBufferPtr            A0.L
  169.             =>    pTE                        A3.L
  170.             =>    hTE                        A4.L
  171.         Out:
  172.             none
  173.  
  174.     typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen,
  175.      unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr,
  176.      TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, 
  177.      Boolean *pixelInChar);
  178.  
  179.         In:
  180.             =>     styleRunLen                D0.W
  181.             =>    styleRunOffset            D1.W
  182.             =>    slop                    D2.W
  183.             =>    textBufferPtr            A0.L
  184.             =>    pTE                        A3.L
  185.             =>    hTE                        A4.L
  186.         Out:
  187.             <=    pixelWidth                D0.W (low)
  188.             <=    Boolean                    D0.W (high)
  189.             <=    charOffset                D1.W
  190.             <=    pixelInChar                D2.W
  191.  
  192.     typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, 
  193.      TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  194.  
  195.         In:
  196.             =>     currentPos                D0.W
  197.             =>    caller                    D2.W
  198.             =>    pTE                        A3.L
  199.             =>    hTE                        A4.L
  200.         Out:
  201.             <=    wordStart                D0.W
  202.             <=    wordEnd                    D1.W
  203.  
  204.     typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength,
  205.        unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  206.  
  207.         In:
  208.             =>     pTE                        A3.L
  209.             =>    changeLength            D7.W
  210.         Out:
  211.             <=    lineStart                D2.W
  212.             <=    firstChar                D3.W
  213.             <=    lastChar                D4.W
  214.  
  215.     typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar,
  216.                          short selector, GrafPtr *currentGrafPort, short *charPosition);
  217.  
  218.         In:
  219.             =>     pTE                        A3.L
  220.             =>    firstChar                D3.W
  221.             =>    lastChar                D4.W
  222.             =>    selector                D7.W
  223.         Out:
  224.             <=    currentGrafPort            A0.L
  225.             <=    charPosition            D0.W
  226.             
  227. */
  228. typedef STACK_UPP_TYPE(HighHookProcPtr)                         HighHookUPP;
  229. typedef STACK_UPP_TYPE(EOLHookProcPtr)                             EOLHookUPP;
  230. typedef STACK_UPP_TYPE(CaretHookProcPtr)                         CaretHookUPP;
  231. typedef STACK_UPP_TYPE(WidthHookProcPtr)                         WidthHookUPP;
  232. typedef STACK_UPP_TYPE(TextWidthHookProcPtr)                     TextWidthHookUPP;
  233. typedef STACK_UPP_TYPE(NWidthHookProcPtr)                         NWidthHookUPP;
  234. typedef STACK_UPP_TYPE(DrawHookProcPtr)                         DrawHookUPP;
  235. typedef STACK_UPP_TYPE(HitTestHookProcPtr)                         HitTestHookUPP;
  236. typedef STACK_UPP_TYPE(TEFindWordProcPtr)                         TEFindWordUPP;
  237. typedef STACK_UPP_TYPE(TERecalcProcPtr)                         TERecalcUPP;
  238. typedef STACK_UPP_TYPE(TEDoTextProcPtr)                         TEDoTextUPP;
  239. typedef REGISTER_UPP_TYPE(TEClickLoopProcPtr)                     TEClickLoopUPP;
  240. typedef REGISTER_UPP_TYPE(WordBreakProcPtr)                     WordBreakUPP;
  241.  
  242. struct TERec {
  243.     Rect                             destRect;
  244.     Rect                             viewRect;
  245.     Rect                             selRect;
  246.     short                             lineHeight;
  247.     short                             fontAscent;
  248.     Point                             selPoint;
  249.     short                             selStart;
  250.     short                             selEnd;
  251.     short                             active;
  252.     WordBreakUPP                     wordBreak;                    /* NOTE: This field is ignored on non-Roman systems and on Carbon (see IM-Text 2-60) */
  253.     TEClickLoopUPP                     clickLoop;
  254.     long                             clickTime;
  255.     short                             clickLoc;
  256.     long                             caretTime;
  257.     short                             caretState;
  258.     short                             just;
  259.     short                             teLength;
  260.     Handle                             hText;
  261.     long                             hDispatchRec;                /* added to replace recalBack & recalLines.  it's a handle anyway */
  262.     short                             clikStuff;
  263.     short                             crOnly;
  264.     short                             txFont;
  265.     StyleField                         txFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  266.     UInt8                             txFlags;                    /* QuickTime uses second 8 bits of StyleField for txFlags */
  267.     short                             txMode;
  268.     short                             txSize;
  269.     GrafPtr                         inPort;
  270.     HighHookUPP                     highHook;
  271.     CaretHookUPP                     caretHook;
  272.     short                             nLines;
  273.     short                             lineStarts[16001];
  274. };
  275.  
  276. enum {
  277.                                                                 /* Justification (word alignment) styles */
  278.     teJustLeft                    = 0,
  279.     teJustCenter                = 1,
  280.     teJustRight                    = -1,
  281.     teForceLeft                    = -2,                            /* new names for the Justification (word alignment) styles */
  282.     teFlushDefault                = 0,                            /*flush according to the line direction */
  283.     teCenter                    = 1,                            /*center justify (word alignment) */
  284.     teFlushRight                = -1,                            /*flush right for all scripts */
  285.     teFlushLeft                    = -2                            /*flush left for all scripts */
  286. };
  287.  
  288. enum {
  289.                                                                 /* Set/Replace style modes */
  290.     fontBit                        = 0,                            /*set font*/
  291.     faceBit                        = 1,                            /*set face*/
  292.     sizeBit                        = 2,                            /*set size*/
  293.     clrBit                        = 3,                            /*set color*/
  294.     addSizeBit                    = 4,                            /*add size mode*/
  295.     toggleBit                    = 5                                /*set faces in toggle mode*/
  296. };
  297.  
  298. enum {
  299.                                                                 /* TESetStyle/TEContinuousStyle modes */
  300.     doFont                        = 1,                            /* set font (family) number*/
  301.     doFace                        = 2,                            /*set character style*/
  302.     doSize                        = 4,                            /*set type size*/
  303.     doColor                        = 8,                            /*set color*/
  304.     doAll                        = 15,                            /*set all attributes*/
  305.     addSize                        = 16,                            /*adjust type size*/
  306.     doToggle                    = 32                            /*toggle mode for TESetStyle*/
  307. };
  308.  
  309. enum {
  310.                                                                 /* offsets into TEDispatchRec */
  311.     EOLHook                        = 0,                            /*[UniversalProcPtr] TEEOLHook*/
  312.     DRAWHook                    = 4,                            /*[UniversalProcPtr] TEWidthHook*/
  313.     WIDTHHook                    = 8,                            /*[UniversalProcPtr] TEDrawHook*/
  314.     HITTESTHook                    = 12,                            /*[UniversalProcPtr] TEHitTestHook*/
  315.     nWIDTHHook                    = 24,                            /*[UniversalProcPtr] nTEWidthHook*/
  316.     TextWidthHook                = 28                            /*[UniversalProcPtr] TETextWidthHook*/
  317. };
  318.  
  319. enum {
  320.                                                                 /* selectors for TECustomHook */
  321.     intEOLHook                    = 0,                            /*TEIntHook value*/
  322.     intDrawHook                    = 1,                            /*TEIntHook value*/
  323.     intWidthHook                = 2,                            /*TEIntHook value*/
  324.     intHitTestHook                = 3,                            /*TEIntHook value*/
  325.     intNWidthHook                = 6,                            /*TEIntHook value for new version of WidthHook*/
  326.     intTextWidthHook            = 7,                            /*TEIntHook value for new TextWidthHook*/
  327.     intInlineInputTSMTEPreUpdateHook = 8,                        /*TEIntHook value for TSMTEPreUpdateProcPtr callback*/
  328.     intInlineInputTSMTEPostUpdateHook = 9                        /*TEIntHook value for TSMTEPostUpdateProcPtr callback*/
  329. };
  330.  
  331. enum {
  332.                                                                 /* feature or bit definitions for TEFeatureFlag */
  333.     teFAutoScroll                = 0,                            /*00000001b*/
  334.     teFTextBuffering            = 1,                            /*00000010b*/
  335.     teFOutlineHilite            = 2,                            /*00000100b*/
  336.     teFInlineInput                = 3,                            /*00001000b */
  337.     teFUseWhiteBackground        = 4,                            /*00010000b */
  338.     teFUseInlineInput            = 5,                            /*00100000b */
  339.     teFInlineInputAutoScroll    = 6                                /*01000000b */
  340. };
  341.  
  342. enum {
  343.                                                                 /* action for the new "bit (un)set" interface, TEFeatureFlag */
  344.     teBitClear                    = 0,
  345.     teBitSet                    = 1,                            /*set the selector bit*/
  346.     teBitTest                    = -1                            /*no change; just return the current setting*/
  347. };
  348.  
  349. enum {
  350.                                                                 /*constants for identifying the routine that called FindWord */
  351.     teWordSelect                = 4,                            /*clickExpand to select word*/
  352.     teWordDrag                    = 8,                            /*clickExpand to drag new word*/
  353.     teFromFind                    = 12,                            /*FindLine called it ($0C)*/
  354.     teFromRecal                    = 16                            /*RecalLines called it ($10)      obsolete */
  355. };
  356.  
  357. enum {
  358.                                                                 /*constants for identifying TEDoText selectors */
  359.     teFind                        = 0,                            /*TEDoText called for searching*/
  360.     teHighlight                    = 1,                            /*TEDoText called for highlighting*/
  361.     teDraw                        = -1,                            /*TEDoText called for drawing text*/
  362.     teCaret                        = -2                            /*TEDoText called for drawing the caret*/
  363. };
  364.  
  365.  
  366. typedef char                             Chars[32001];
  367. typedef char *                            CharsPtr;
  368. typedef CharsPtr *                        CharsHandle;
  369.  
  370. struct StyleRun {
  371.     short                             startChar;                    /*starting character position*/
  372.     short                             styleIndex;                    /*index in style table*/
  373. };
  374. typedef struct StyleRun                    StyleRun;
  375.  
  376. struct STElement {
  377.     short                             stCount;                    /*number of runs in this style*/
  378.     short                             stHeight;                    /*line height*/
  379.     short                             stAscent;                    /*font ascent*/
  380.     short                             stFont;                        /*font (family) number*/
  381.     StyleField                         stFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  382.     UInt8                             txFlags;                    /* QuickTime uses second 8 bits of StyleField for txFlags */
  383.     short                             stSize;                        /*size in points*/
  384.     RGBColor                         stColor;                    /*absolute (RGB) color*/
  385. };
  386. typedef struct STElement                STElement;
  387.  
  388. typedef STElement                         TEStyleTable[1777];
  389. typedef STElement *                        STPtr;
  390. typedef STPtr *                            STHandle;
  391.  
  392. struct LHElement {
  393.     short                             lhHeight;                    /*maximum height in line*/
  394.     short                             lhAscent;                    /*maximum ascent in line*/
  395. };
  396. typedef struct LHElement                LHElement;
  397.  
  398. typedef LHElement                         LHTable[8001];
  399. typedef LHElement *                        LHPtr;
  400. typedef LHPtr *                            LHHandle;
  401.  
  402. struct ScrpSTElement {
  403.     long                             scrpStartChar;                /*starting character position*/
  404.     short                             scrpHeight;
  405.     short                             scrpAscent;
  406.     short                             scrpFont;
  407.     StyleField                         scrpFace;                    /*StyleField occupies 16-bits, but only first 8-bits are used*/
  408.     UInt8                             txFlags;                    /* QuickTime uses second 8 bits of StyleField for txFlags */
  409.     short                             scrpSize;
  410.     RGBColor                         scrpColor;
  411. };
  412. typedef struct ScrpSTElement            ScrpSTElement;
  413. /* ARRAY [0..1600] OF ScrpSTElement */
  414.  
  415. typedef ScrpSTElement                     ScrpSTTable[1601];
  416.  
  417. struct StScrpRec {
  418.     short                             scrpNStyles;                /*number of styles in scrap*/
  419.     ScrpSTTable                     scrpStyleTab;                /*table of styles for scrap*/
  420. };
  421. typedef struct StScrpRec                StScrpRec;
  422.  
  423. typedef StScrpRec *                        StScrpPtr;
  424. typedef StScrpPtr *                        StScrpHandle;
  425.  
  426. struct NullStRec {
  427.     long                             teReserved;                    /*reserved for future expansion*/
  428.     StScrpHandle                     nullScrap;                    /*handle to scrap style table*/
  429. };
  430. typedef struct NullStRec                NullStRec;
  431.  
  432. typedef NullStRec *                        NullStPtr;
  433. typedef NullStPtr *                        NullStHandle;
  434.  
  435. struct TEStyleRec {
  436.     short                             nRuns;                        /*number of style runs*/
  437.     short                             nStyles;                    /*size of style table*/
  438.     STHandle                         styleTab;                    /*handle to style table*/
  439.     LHHandle                         lhTab;                        /*handle to line-height table*/
  440.     long                             teRefCon;                    /*reserved for application use*/
  441.     NullStHandle                     nullStyle;                    /*Handle to style set at null selection*/
  442.     StyleRun                         runs[8001];                    /*ARRAY [0..8000] OF StyleRun*/
  443. };
  444. typedef struct TEStyleRec                TEStyleRec;
  445.  
  446. typedef TEStyleRec *                    TEStylePtr;
  447. typedef TEStylePtr *                    TEStyleHandle;
  448.  
  449. struct TextStyle {
  450.     short                             tsFont;                        /*font (family) number*/
  451.     StyleField                         tsFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  452.     UInt8                             txFlags;                    /*QuickTime uses second 8 bits of StyleField for txFlags*/
  453.     short                             tsSize;                        /*size in point*/
  454.     RGBColor                         tsColor;                    /*absolute (RGB) color*/
  455. };
  456. typedef struct TextStyle                TextStyle;
  457. typedef TextStyle *                        TextStylePtr;
  458. typedef TextStylePtr *                    TextStyleHandle;
  459.  
  460. typedef short                             TEIntHook;
  461. #if OPAQUE_UPP_TYPES
  462.     EXTERN_API(HighHookUPP)
  463.     NewHighHookUPP                   (HighHookProcPtr            userRoutine);
  464.  
  465.     EXTERN_API(EOLHookUPP)
  466.     NewEOLHookUPP                   (EOLHookProcPtr            userRoutine);
  467.  
  468.     EXTERN_API(CaretHookUPP)
  469.     NewCaretHookUPP                   (CaretHookProcPtr        userRoutine);
  470.  
  471.     EXTERN_API(WidthHookUPP)
  472.     NewWidthHookUPP                   (WidthHookProcPtr        userRoutine);
  473.  
  474.     EXTERN_API(TextWidthHookUPP)
  475.     NewTextWidthHookUPP               (TextWidthHookProcPtr    userRoutine);
  476.  
  477.     EXTERN_API(NWidthHookUPP)
  478.     NewNWidthHookUPP               (NWidthHookProcPtr        userRoutine);
  479.  
  480.     EXTERN_API(DrawHookUPP)
  481.     NewDrawHookUPP                   (DrawHookProcPtr            userRoutine);
  482.  
  483.     EXTERN_API(HitTestHookUPP)
  484.     NewHitTestHookUPP               (HitTestHookProcPtr        userRoutine);
  485.  
  486.     EXTERN_API(TEFindWordUPP)
  487.     NewTEFindWordUPP               (TEFindWordProcPtr        userRoutine);
  488.  
  489.     EXTERN_API(TERecalcUPP)
  490.     NewTERecalcUPP                   (TERecalcProcPtr            userRoutine);
  491.  
  492.     EXTERN_API(TEDoTextUPP)
  493.     NewTEDoTextUPP                   (TEDoTextProcPtr            userRoutine);
  494.  
  495.     EXTERN_API(TEClickLoopUPP)
  496.     NewTEClickLoopUPP               (TEClickLoopProcPtr        userRoutine);
  497.  
  498.     EXTERN_API(WordBreakUPP)
  499.     NewWordBreakUPP                   (WordBreakProcPtr        userRoutine);
  500.  
  501.     EXTERN_API(void)
  502.     DisposeHighHookUPP               (HighHookUPP                userUPP);
  503.  
  504.     EXTERN_API(void)
  505.     DisposeEOLHookUPP               (EOLHookUPP                userUPP);
  506.  
  507.     EXTERN_API(void)
  508.     DisposeCaretHookUPP               (CaretHookUPP            userUPP);
  509.  
  510.     EXTERN_API(void)
  511.     DisposeWidthHookUPP               (WidthHookUPP            userUPP);
  512.  
  513.     EXTERN_API(void)
  514.     DisposeTextWidthHookUPP           (TextWidthHookUPP        userUPP);
  515.  
  516.     EXTERN_API(void)
  517.     DisposeNWidthHookUPP           (NWidthHookUPP            userUPP);
  518.  
  519.     EXTERN_API(void)
  520.     DisposeDrawHookUPP               (DrawHookUPP                userUPP);
  521.  
  522.     EXTERN_API(void)
  523.     DisposeHitTestHookUPP           (HitTestHookUPP            userUPP);
  524.  
  525.     EXTERN_API(void)
  526.     DisposeTEFindWordUPP           (TEFindWordUPP            userUPP);
  527.  
  528.     EXTERN_API(void)
  529.     DisposeTERecalcUPP               (TERecalcUPP                userUPP);
  530.  
  531.     EXTERN_API(void)
  532.     DisposeTEDoTextUPP               (TEDoTextUPP                userUPP);
  533.  
  534.     EXTERN_API(void)
  535.     DisposeTEClickLoopUPP           (TEClickLoopUPP            userUPP);
  536.  
  537.     EXTERN_API(void)
  538.     DisposeWordBreakUPP               (WordBreakUPP            userUPP);
  539.  
  540.     EXTERN_API(void)
  541.     InvokeHighHookUPP               (const Rect *            r,
  542.                                     TEPtr                    pTE,
  543.                                     HighHookUPP                userUPP);
  544.  
  545.     EXTERN_API(Boolean)
  546.     InvokeEOLHookUPP               (char                    theChar,
  547.                                     TEPtr                    pTE,
  548.                                     TEHandle                hTE,
  549.                                     EOLHookUPP                userUPP);
  550.  
  551.     EXTERN_API(void)
  552.     InvokeCaretHookUPP               (const Rect *            r,
  553.                                     TEPtr                    pTE,
  554.                                     CaretHookUPP            userUPP);
  555.  
  556.     EXTERN_API(unsigned short)
  557.     InvokeWidthHookUPP               (unsigned short            textLen,
  558.                                     unsigned short            textOffset,
  559.                                     void *                    textBufferPtr,
  560.                                     TEPtr                    pTE,
  561.                                     TEHandle                hTE,
  562.                                     WidthHookUPP            userUPP);
  563.  
  564.     EXTERN_API(unsigned short)
  565.     InvokeTextWidthHookUPP           (unsigned short            textLen,
  566.                                     unsigned short            textOffset,
  567.                                     void *                    textBufferPtr,
  568.                                     TEPtr                    pTE,
  569.                                     TEHandle                hTE,
  570.                                     TextWidthHookUPP        userUPP);
  571.  
  572.     EXTERN_API(unsigned short)
  573.     InvokeNWidthHookUPP               (unsigned short            styleRunLen,
  574.                                     unsigned short            styleRunOffset,
  575.                                     short                    slop,
  576.                                     short                    direction,
  577.                                     void *                    textBufferPtr,
  578.                                     short *                    lineStart,
  579.                                     TEPtr                    pTE,
  580.                                     TEHandle                hTE,
  581.                                     NWidthHookUPP            userUPP);
  582.  
  583.     EXTERN_API(void)
  584.     InvokeDrawHookUPP               (unsigned short            textOffset,
  585.                                     unsigned short            drawLen,
  586.                                     void *                    textBufferPtr,
  587.                                     TEPtr                    pTE,
  588.                                     TEHandle                hTE,
  589.                                     DrawHookUPP                userUPP);
  590.  
  591.     EXTERN_API(Boolean)
  592.     InvokeHitTestHookUPP           (unsigned short            styleRunLen,
  593.                                     unsigned short            styleRunOffset,
  594.                                     unsigned short            slop,
  595.                                     void *                    textBufferPtr,
  596.                                     TEPtr                    pTE,
  597.                                     TEHandle                hTE,
  598.                                     unsigned short *        pixelWidth,
  599.                                     unsigned short *        charOffset,
  600.                                     Boolean *                pixelInChar,
  601.                                     HitTestHookUPP            userUPP);
  602.  
  603.     EXTERN_API(void)
  604.     InvokeTEFindWordUPP               (unsigned short            currentPos,
  605.                                     short                    caller,
  606.                                     TEPtr                    pTE,
  607.                                     TEHandle                hTE,
  608.                                     unsigned short *        wordStart,
  609.                                     unsigned short *        wordEnd,
  610.                                     TEFindWordUPP            userUPP);
  611.  
  612.     EXTERN_API(void)
  613.     InvokeTERecalcUPP               (TEPtr                    pTE,
  614.                                     unsigned short            changeLength,
  615.                                     unsigned short *        lineStart,
  616.                                     unsigned short *        firstChar,
  617.                                     unsigned short *        lastChar,
  618.                                     TERecalcUPP                userUPP);
  619.  
  620.     EXTERN_API(void)
  621.     InvokeTEDoTextUPP               (TEPtr                    pTE,
  622.                                     unsigned short            firstChar,
  623.                                     unsigned short            lastChar,
  624.                                     short                    selector,
  625.                                     GrafPtr *                currentGrafPort,
  626.                                     short *                    charPosition,
  627.                                     TEDoTextUPP                userUPP);
  628.  
  629.     EXTERN_API(Boolean)
  630.     InvokeTEClickLoopUPP           (TEPtr                    pTE,
  631.                                     TEClickLoopUPP            userUPP);
  632.  
  633.     EXTERN_API(Boolean)
  634.     InvokeWordBreakUPP               (Ptr                        text,
  635.                                     short                    charPos,
  636.                                     WordBreakUPP            userUPP);
  637.  
  638. #else
  639.     enum { uppHighHookProcInfo = 0x0000000F };                         /* SPECIAL_CASE_PROCINFO(0) */
  640.     enum { uppEOLHookProcInfo = 0x0000001F };                         /* SPECIAL_CASE_PROCINFO(1) */
  641.     enum { uppCaretHookProcInfo = 0x0000000F };                     /* SPECIAL_CASE_PROCINFO(0) */
  642.     enum { uppWidthHookProcInfo = 0x0000002F };                     /* SPECIAL_CASE_PROCINFO(2) */
  643.     enum { uppTextWidthHookProcInfo = 0x0000002F };                 /* SPECIAL_CASE_PROCINFO(2) */
  644.     enum { uppNWidthHookProcInfo = 0x0000003F };                     /* SPECIAL_CASE_PROCINFO(3) */
  645.     enum { uppDrawHookProcInfo = 0x0000004F };                         /* SPECIAL_CASE_PROCINFO(4) */
  646.     enum { uppHitTestHookProcInfo = 0x0000005F };                     /* SPECIAL_CASE_PROCINFO(5) */
  647.     enum { uppTEFindWordProcInfo = 0x0000006F };                     /* SPECIAL_CASE_PROCINFO(6) */
  648.     enum { uppTERecalcProcInfo = 0x0000009F };                         /* SPECIAL_CASE_PROCINFO(9) */
  649.     enum { uppTEDoTextProcInfo = 0x000000AF };                         /* SPECIAL_CASE_PROCINFO(10) */
  650.     enum { uppTEClickLoopProcInfo = 0x0000F812 };                     /* register 1_byte:D0 Func(4_bytes:A3) */
  651.     enum { uppWordBreakProcInfo = 0x00029812 };                     /* register 1_byte:D0 Func(4_bytes:A0, 2_bytes:D0) */
  652.     #define NewHighHookUPP(userRoutine)                             (HighHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppHighHookProcInfo, GetCurrentArchitecture())
  653.     #define NewEOLHookUPP(userRoutine)                                 (EOLHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppEOLHookProcInfo, GetCurrentArchitecture())
  654.     #define NewCaretHookUPP(userRoutine)                             (CaretHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCaretHookProcInfo, GetCurrentArchitecture())
  655.     #define NewWidthHookUPP(userRoutine)                             (WidthHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppWidthHookProcInfo, GetCurrentArchitecture())
  656.     #define NewTextWidthHookUPP(userRoutine)                         (TextWidthHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextWidthHookProcInfo, GetCurrentArchitecture())
  657.     #define NewNWidthHookUPP(userRoutine)                             (NWidthHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNWidthHookProcInfo, GetCurrentArchitecture())
  658.     #define NewDrawHookUPP(userRoutine)                             (DrawHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDrawHookProcInfo, GetCurrentArchitecture())
  659.     #define NewHitTestHookUPP(userRoutine)                             (HitTestHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppHitTestHookProcInfo, GetCurrentArchitecture())
  660.     #define NewTEFindWordUPP(userRoutine)                             (TEFindWordUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEFindWordProcInfo, GetCurrentArchitecture())
  661.     #define NewTERecalcUPP(userRoutine)                             (TERecalcUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTERecalcProcInfo, GetCurrentArchitecture())
  662.     #define NewTEDoTextUPP(userRoutine)                             (TEDoTextUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEDoTextProcInfo, GetCurrentArchitecture())
  663.     #define NewTEClickLoopUPP(userRoutine)                             (TEClickLoopUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEClickLoopProcInfo, GetCurrentArchitecture())
  664.     #define NewWordBreakUPP(userRoutine)                             (WordBreakUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppWordBreakProcInfo, GetCurrentArchitecture())
  665.     #define DisposeHighHookUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  666.     #define DisposeEOLHookUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  667.     #define DisposeCaretHookUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  668.     #define DisposeWidthHookUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  669.     #define DisposeTextWidthHookUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  670.     #define DisposeNWidthHookUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  671.     #define DisposeDrawHookUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  672.     #define DisposeHitTestHookUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  673.     #define DisposeTEFindWordUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  674.     #define DisposeTERecalcUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  675.     #define DisposeTEDoTextUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  676.     #define DisposeTEClickLoopUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  677.     #define DisposeWordBreakUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  678.     #define InvokeHighHookUPP(r, pTE, userUPP)                         CALL_TWO_PARAMETER_UPP((userUPP), uppHighHookProcInfo, (r), (pTE))
  679.     #define InvokeEOLHookUPP(theChar, pTE, hTE, userUPP)             (Boolean)CALL_THREE_PARAMETER_UPP((userUPP), uppEOLHookProcInfo, (theChar), (pTE), (hTE))
  680.     #define InvokeCaretHookUPP(r, pTE, userUPP)                     CALL_TWO_PARAMETER_UPP((userUPP), uppCaretHookProcInfo, (r), (pTE))
  681.     #define InvokeWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, userUPP)  (unsigned short)CALL_FIVE_PARAMETER_UPP((userUPP), uppWidthHookProcInfo, (textLen), (textOffset), (textBufferPtr), (pTE), (hTE))
  682.     #define InvokeTextWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, userUPP)  (unsigned short)CALL_FIVE_PARAMETER_UPP((userUPP), uppTextWidthHookProcInfo, (textLen), (textOffset), (textBufferPtr), (pTE), (hTE))
  683.     #define InvokeNWidthHookUPP(styleRunLen, styleRunOffset, slop, direction, textBufferPtr, lineStart, pTE, hTE, userUPP)  (unsigned short)CALL_EIGHT_PARAMETER_UPP((userUPP), uppNWidthHookProcInfo, (styleRunLen), (styleRunOffset), (slop), (direction), (textBufferPtr), (lineStart), (pTE), (hTE))
  684.     #define InvokeDrawHookUPP(textOffset, drawLen, textBufferPtr, pTE, hTE, userUPP)  CALL_FIVE_PARAMETER_UPP((userUPP), uppDrawHookProcInfo, (textOffset), (drawLen), (textBufferPtr), (pTE), (hTE))
  685.     #define InvokeHitTestHookUPP(styleRunLen, styleRunOffset, slop, textBufferPtr, pTE, hTE, pixelWidth, charOffset, pixelInChar, userUPP)  (Boolean)CALL_NINE_PARAMETER_UPP((userUPP), uppHitTestHookProcInfo, (styleRunLen), (styleRunOffset), (slop), (textBufferPtr), (pTE), (hTE), (pixelWidth), (charOffset), (pixelInChar))
  686.     #define InvokeTEFindWordUPP(currentPos, caller, pTE, hTE, wordStart, wordEnd, userUPP)  CALL_SIX_PARAMETER_UPP((userUPP), uppTEFindWordProcInfo, (currentPos), (caller), (pTE), (hTE), (wordStart), (wordEnd))
  687.     #define InvokeTERecalcUPP(pTE, changeLength, lineStart, firstChar, lastChar, userUPP)  CALL_FIVE_PARAMETER_UPP((userUPP), uppTERecalcProcInfo, (pTE), (changeLength), (lineStart), (firstChar), (lastChar))
  688.     #define InvokeTEDoTextUPP(pTE, firstChar, lastChar, selector, currentGrafPort, charPosition, userUPP)  CALL_SIX_PARAMETER_UPP((userUPP), uppTEDoTextProcInfo, (pTE), (firstChar), (lastChar), (selector), (currentGrafPort), (charPosition))
  689.     #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  690.     /* InvokeTEClickLoopUPP can't be called from classic 68k without glue code */
  691.     #else
  692.         #define InvokeTEClickLoopUPP(pTE, userUPP)                         (Boolean)CALL_ONE_PARAMETER_UPP((userUPP), uppTEClickLoopProcInfo, (pTE))
  693.     #endif
  694.     #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  695.     #pragma parameter __D0 InvokeWordBreakUPP(__A0, __D0, __A1)
  696.     Boolean InvokeWordBreakUPP(Ptr text, short charPos, WordBreakUPP userUPP) = 0x4E91;
  697.     #else
  698.         #define InvokeWordBreakUPP(text, charPos, userUPP)                 (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppWordBreakProcInfo, (text), (charPos))
  699.     #endif
  700. #endif
  701. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  702. #define NewHighHookProc(userRoutine)                             NewHighHookUPP(userRoutine)
  703. #define NewEOLHookProc(userRoutine)                             NewEOLHookUPP(userRoutine)
  704. #define NewCaretHookProc(userRoutine)                             NewCaretHookUPP(userRoutine)
  705. #define NewWidthHookProc(userRoutine)                             NewWidthHookUPP(userRoutine)
  706. #define NewTextWidthHookProc(userRoutine)                         NewTextWidthHookUPP(userRoutine)
  707. #define NewNWidthHookProc(userRoutine)                             NewNWidthHookUPP(userRoutine)
  708. #define NewDrawHookProc(userRoutine)                             NewDrawHookUPP(userRoutine)
  709. #define NewHitTestHookProc(userRoutine)                         NewHitTestHookUPP(userRoutine)
  710. #define NewTEFindWordProc(userRoutine)                             NewTEFindWordUPP(userRoutine)
  711. #define NewTERecalcProc(userRoutine)                             NewTERecalcUPP(userRoutine)
  712. #define NewTEDoTextProc(userRoutine)                             NewTEDoTextUPP(userRoutine)
  713. #define NewTEClickLoopProc(userRoutine)                         NewTEClickLoopUPP(userRoutine)
  714. #define NewWordBreakProc(userRoutine)                             NewWordBreakUPP(userRoutine)
  715. #define CallHighHookProc(userRoutine, r, pTE)                    InvokeHighHookUPP(r, pTE, userRoutine)
  716. #define CallEOLHookProc(userRoutine, theChar, pTE, hTE)            InvokeEOLHookUPP(theChar, pTE, hTE, userRoutine)
  717. #define CallCaretHookProc(userRoutine, r, pTE)                    InvokeCaretHookUPP(r, pTE, userRoutine)
  718. #define CallWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, pTE, hTE) InvokeWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, userRoutine)
  719. #define CallTextWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, pTE, hTE) InvokeTextWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, userRoutine)
  720. #define CallNWidthHookProc(userRoutine, styleRunLen, styleRunOffset, slop, direction, textBufferPtr, lineStart, pTE, hTE) InvokeNWidthHookUPP(styleRunLen, styleRunOffset, slop, direction, textBufferPtr, lineStart, pTE, hTE, userRoutine)
  721. #define CallDrawHookProc(userRoutine, textOffset, drawLen, textBufferPtr, pTE, hTE) InvokeDrawHookUPP(textOffset, drawLen, textBufferPtr, pTE, hTE, userRoutine)
  722. #define CallHitTestHookProc(userRoutine, styleRunLen, styleRunOffset, slop, textBufferPtr, pTE, hTE, pixelWidth, charOffset, pixelInChar) InvokeHitTestHookUPP(styleRunLen, styleRunOffset, slop, textBufferPtr, pTE, hTE, pixelWidth, charOffset, pixelInChar, userRoutine)
  723. #define CallTEFindWordProc(userRoutine, currentPos, caller, pTE, hTE, wordStart, wordEnd) InvokeTEFindWordUPP(currentPos, caller, pTE, hTE, wordStart, wordEnd, userRoutine)
  724. #define CallTERecalcProc(userRoutine, pTE, changeLength, lineStart, firstChar, lastChar) InvokeTERecalcUPP(pTE, changeLength, lineStart, firstChar, lastChar, userRoutine)
  725. #define CallTEDoTextProc(userRoutine, pTE, firstChar, lastChar, selector, currentGrafPort, charPosition) InvokeTEDoTextUPP(pTE, firstChar, lastChar, selector, currentGrafPort, charPosition, userRoutine)
  726. #define CallTEClickLoopProc(userRoutine, pTE)                    InvokeTEClickLoopUPP(pTE, userRoutine)
  727. #define CallWordBreakProc(userRoutine, text, charPos)            InvokeWordBreakUPP(text, charPos, userRoutine)
  728. enum {
  729.                                                                 /* feature bit 4 for TEFeatureFlag no longer in use */
  730.     teFUseTextServices            = 4                                /*00010000b */
  731. };
  732.  
  733.  
  734. #if OLDROUTINENAMES
  735. /* action for the old C "bit (un)set" interface, TEFeatureFlag */
  736. #define TEBitClear    teBitClear
  737. #define TEBitSet     teBitSet
  738. #define TEBitTest    teBitTest
  739. #define teFAutoScr    teFAutoScroll
  740. #define toglBit        toggleBit
  741. #endif  /* OLDROUTINENAMES */
  742.  
  743. EXTERN_API( Handle )
  744. TEScrapHandle                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x0AB4);
  745.  
  746.  
  747. EXTERN_API( long )
  748. TEGetScrapLength                (void);
  749.  
  750. #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  751. #define TEGetScrapLength() ((long) * (unsigned short *) 0x0AB0)
  752. #endif
  753. EXTERN_API( void )
  754. TEInit                            (void)                                                        ONEWORDINLINE(0xA9CC);
  755.  
  756. EXTERN_API( TEHandle )
  757. TENew                            (const Rect *            destRect,
  758.                                  const Rect *            viewRect)                            ONEWORDINLINE(0xA9D2);
  759.  
  760. EXTERN_API( void )
  761. TEDispose                        (TEHandle                 hTE)                                ONEWORDINLINE(0xA9CD);
  762.  
  763. EXTERN_API( void )
  764. TESetText                        (const void *            text,
  765.                                  long                     length,
  766.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9CF);
  767.  
  768. EXTERN_API( CharsHandle )
  769. TEGetText                        (TEHandle                 hTE)                                ONEWORDINLINE(0xA9CB);
  770.  
  771. EXTERN_API( void )
  772. TEIdle                            (TEHandle                 hTE)                                ONEWORDINLINE(0xA9DA);
  773.  
  774. EXTERN_API( void )
  775. TESetSelect                        (long                     selStart,
  776.                                  long                     selEnd,
  777.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9D1);
  778.  
  779. EXTERN_API( void )
  780. TEActivate                        (TEHandle                 hTE)                                ONEWORDINLINE(0xA9D8);
  781.  
  782. EXTERN_API( void )
  783. TEDeactivate                    (TEHandle                 hTE)                                ONEWORDINLINE(0xA9D9);
  784.  
  785. EXTERN_API( void )
  786. TEKey                            (CharParameter             key,
  787.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9DC);
  788.  
  789. EXTERN_API( void )
  790. TECut                            (TEHandle                 hTE)                                ONEWORDINLINE(0xA9D6);
  791.  
  792. EXTERN_API( void )
  793. TECopy                            (TEHandle                 hTE)                                ONEWORDINLINE(0xA9D5);
  794.  
  795. EXTERN_API( void )
  796. TEPaste                            (TEHandle                 hTE)                                ONEWORDINLINE(0xA9DB);
  797.  
  798. EXTERN_API( void )
  799. TEDelete                        (TEHandle                 hTE)                                ONEWORDINLINE(0xA9D7);
  800.  
  801. EXTERN_API( void )
  802. TEInsert                        (const void *            text,
  803.                                  long                     length,
  804.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9DE);
  805.  
  806. EXTERN_API( void )
  807. TESetAlignment                    (short                     just,
  808.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9DF);
  809.  
  810. EXTERN_API( void )
  811. TEUpdate                        (const Rect *            rUpdate,
  812.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9D3);
  813.  
  814. EXTERN_API( void )
  815. TETextBox                        (const void *            text,
  816.                                  long                     length,
  817.                                  const Rect *            box,
  818.                                  short                     just)                                ONEWORDINLINE(0xA9CE);
  819.  
  820. EXTERN_API( void )
  821. TEScroll                        (short                     dh,
  822.                                  short                     dv,
  823.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA9DD);
  824.  
  825. EXTERN_API( void )
  826. TESelView                        (TEHandle                 hTE)                                ONEWORDINLINE(0xA811);
  827.  
  828. EXTERN_API( void )
  829. TEPinScroll                        (short                     dh,
  830.                                  short                     dv,
  831.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA812);
  832.  
  833. EXTERN_API( void )
  834. TEAutoView                        (Boolean                 fAuto,
  835.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA813);
  836.  
  837. EXTERN_API( void )
  838. TECalText                        (TEHandle                 hTE)                                ONEWORDINLINE(0xA9D0);
  839.  
  840. EXTERN_API( short )
  841. TEGetOffset                        (Point                     pt,
  842.                                  TEHandle                 hTE)                                ONEWORDINLINE(0xA83C);
  843.  
  844. EXTERN_API( Point )
  845. TEGetPoint                        (short                     offset,
  846.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0008, 0xA83D);
  847.  
  848. EXTERN_API( void )
  849. TEClick                            (Point                     pt,
  850.                                  Boolean                 fExtend,
  851.                                  TEHandle                 h)                                    ONEWORDINLINE(0xA9D4);
  852.  
  853. EXTERN_API( TEHandle )
  854. TEStyleNew                        (const Rect *            destRect,
  855.                                  const Rect *            viewRect)                            ONEWORDINLINE(0xA83E);
  856.  
  857. EXTERN_API( void )
  858. TESetStyleHandle                (TEStyleHandle             theHandle,
  859.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0005, 0xA83D);
  860.  
  861. EXTERN_API( TEStyleHandle )
  862. TEGetStyleHandle                (TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0004, 0xA83D);
  863.  
  864. EXTERN_API( void )
  865. TEGetStyle                        (short                     offset,
  866.                                  TextStyle *            theStyle,
  867.                                  short *                lineHeight,
  868.                                  short *                fontAscent,
  869.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0003, 0xA83D);
  870.  
  871. EXTERN_API( void )
  872. TEStylePaste                    (TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0000, 0xA83D);
  873.  
  874. EXTERN_API( void )
  875. TESetStyle                        (short                     mode,
  876.                                  const TextStyle *        newStyle,
  877.                                  Boolean                 fRedraw,
  878.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0001, 0xA83D);
  879.  
  880. EXTERN_API( void )
  881. TEReplaceStyle                    (short                     mode,
  882.                                  const TextStyle *        oldStyle,
  883.                                  const TextStyle *        newStyle,
  884.                                  Boolean                 fRedraw,
  885.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0002, 0xA83D);
  886.  
  887. EXTERN_API( StScrpHandle )
  888. TEGetStyleScrapHandle            (TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0006, 0xA83D);
  889.  
  890. EXTERN_API( void )
  891. TEStyleInsert                    (const void *            text,
  892.                                  long                     length,
  893.                                  StScrpHandle             hST,
  894.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0007, 0xA83D);
  895.  
  896. EXTERN_API( long )
  897. TEGetHeight                        (long                     endLine,
  898.                                  long                     startLine,
  899.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x0009, 0xA83D);
  900.  
  901. EXTERN_API( Boolean )
  902. TEContinuousStyle                (short *                mode,
  903.                                  TextStyle *            aStyle,
  904.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x000A, 0xA83D);
  905.  
  906. EXTERN_API( void )
  907. TEUseStyleScrap                    (long                     rangeStart,
  908.                                  long                     rangeEnd,
  909.                                  StScrpHandle             newStyles,
  910.                                  Boolean                 fRedraw,
  911.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x000B, 0xA83D);
  912.  
  913. EXTERN_API( void )
  914. TECustomHook                    (TEIntHook                 which,
  915.                                  UniversalProcPtr *        addr,
  916.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x000C, 0xA83D);
  917.  
  918. EXTERN_API( long )
  919. TENumStyles                        (long                     rangeStart,
  920.                                  long                     rangeEnd,
  921.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x000D, 0xA83D);
  922.  
  923. EXTERN_API( short )
  924. TEFeatureFlag                    (short                     feature,
  925.                                  short                     action,
  926.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x000E, 0xA83D);
  927.  
  928. EXTERN_API( OSErr )
  929. TEGetHiliteRgn                    (RgnHandle                 region,
  930.                                  TEHandle                 hTE)                                THREEWORDINLINE(0x3F3C, 0x000F, 0xA83D);
  931.  
  932. EXTERN_API( void )
  933. TESetScrapLength                (long                     length);
  934.  
  935. EXTERN_API( OSErr )
  936. TEFromScrap                        (void);
  937.  
  938. EXTERN_API( OSErr )
  939. TEToScrap                        (void);
  940.  
  941. EXTERN_API( void )
  942. TESetClickLoop                    (TEClickLoopUPP         clikProc,
  943.                                  TEHandle                 hTE);
  944.  
  945. #if CALL_NOT_IN_CARBON
  946. EXTERN_API( void )
  947. TESetWordBreak                    (WordBreakUPP             wBrkProc,
  948.                                  TEHandle                 hTE);
  949.  
  950. #endif  /* CALL_NOT_IN_CARBON */
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958. EXTERN_API( TEDoTextUPP )
  959. TEGetDoTextHook                    (void);
  960.  
  961. EXTERN_API( void )
  962. TESetDoTextHook                    (TEDoTextUPP             value);
  963.  
  964. EXTERN_API( TERecalcUPP )
  965. TEGetRecalcHook                    (void);
  966.  
  967. EXTERN_API( void )
  968. TESetRecalcHook                    (TERecalcUPP             value);
  969.  
  970. EXTERN_API( TEFindWordUPP )
  971. TEGetFindWordHook                (void);
  972.  
  973. EXTERN_API( void )
  974. TESetFindWordHook                (TEFindWordUPP             value);
  975.  
  976. EXTERN_API( Handle )
  977. TEGetScrapHandle                (void);
  978.  
  979. EXTERN_API( void )
  980. TESetScrapHandle                (Handle                 value);
  981.  
  982.  
  983. EXTERN_API_C( void )
  984. teclick                            (Point *                pt,
  985.                                  Boolean                 fExtend,
  986.                                  TEHandle                 h);
  987.  
  988. #if OLDROUTINENAMES
  989. #define TESetJust(just, hTE) TESetAlignment(just, hTE)
  990. #define TextBox(text, length, box, just) TETextBox(text, length, box, just)
  991. #define TEStylNew(destRect, viewRect) TEStyleNew(destRect, viewRect)
  992. #define SetStylHandle(theHandle, hTE) TESetStyleHandle(theHandle, hTE)
  993. #define SetStyleHandle(theHandle, hTE) TESetStyleHandle (theHandle, hTE)
  994. #define GetStylHandle(hTE) TEGetStyleHandle(hTE)
  995. #define GetStyleHandle(hTE) TEGetStyleHandle(hTE)
  996. #define TEStylPaste(hTE) TEStylePaste(hTE)
  997. #define GetStylScrap(hTE) TEGetStyleScrapHandle(hTE)
  998. #define GetStyleScrap(hTE) TEGetStyleScrapHandle(hTE)
  999. #define SetStylScrap(rangeStart, rangeEnd, newStyles, redraw, hTE) TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
  1000. #define SetStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)  TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
  1001. #define TEStylInsert(text, length, hST, hTE) TEStyleInsert(text, length, hST, hTE)
  1002. #define TESetScrapLen(length) TESetScrapLength(length)
  1003. #define TEGetScrapLen() TEGetScrapLength()
  1004. #define SetClikLoop(clikProc, hTE) TESetClickLoop(clikProc, hTE)
  1005. #define SetWordBreak(wBrkProc, hTE) TESetWordBreak(wBrkProc, hTE)
  1006. #endif  /* OLDROUTINENAMES */
  1007.  
  1008.  
  1009. #if PRAGMA_STRUCT_ALIGN
  1010.     #pragma options align=reset
  1011. #elif PRAGMA_STRUCT_PACKPUSH
  1012.     #pragma pack(pop)
  1013. #elif PRAGMA_STRUCT_PACK
  1014.     #pragma pack()
  1015. #endif
  1016.  
  1017. #ifdef PRAGMA_IMPORT_OFF
  1018. #pragma import off
  1019. #elif PRAGMA_IMPORT
  1020. #pragma import reset
  1021. #endif
  1022.  
  1023. #ifdef __cplusplus
  1024. }
  1025. #endif
  1026.  
  1027. #endif /* __TEXTEDIT__ */
  1028.  
  1029.